﻿// 302 中国剩余定理2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>

using namespace std;
/*
http://oj.daimayuan.top/course/21/problem/516

一共T组数据，每组数据，给定n个方程，x≡ai(modmi)
。判断方程是不是有解。

输入格式
第一行一个整数T。

接下来对于每组数据，第一行一个整数n
，接下来n行，每行两个整数ai,mi。

输出格式
对于每组数据，输出一个字符串Yes或者No表示是否有解。

样例输入
2
3
1 10
2 11
3 12
3
2 10
2 11
3 12
样例输出
Yes
No
数据规模
保证T≤1000,1≤n≤50,0≤ai<mi≤105。
*/

typedef long long ll;
bool solve() {
    int n;
    scanf("%d",&n);
    map<int, vector<pair<int, int>>> eqns;
    for (int i = 0; i < n; i++) {
        int a, m;
        scanf("%d%d", &a, &m);
        for (int j = 2; j * j <= m; j++) if (m % j == 0) {
            int p = j, pe = 1;
            while (m % j == 0) m /= j, pe = pe * j;
            eqns[p].push_back({ pe,a % pe });
        }
        if (m != 1) eqns[m].push_back({ m,a % m });
    }
    for (auto eq : eqns) {
        auto eqn = eq.second;
        int v = max_element(eqn.begin(), eqn.end())->second;
        for (auto p : eqn) {
            if (v % p.first != p.second) return false;
        }
    }
    return true;
}


int main()
{
    int T;
    scanf("%d",&T);
    for (int tc = 0; tc < T; tc++) {
        puts(solve() ? "Yes" : "No");
    }
}

 